選擇資料庫上 大致會區分成兩個方向SQL DataBase和 NoSQL DataBase
如果使用雲端主機商建立SQL Server ,大概就是以下兩種方式
如果預算比較少的外包案件,會採取拉單台Virtual Machine(VM)(對應GCP上的服務為Google Compute Engine (GCE)) 建置SQL主機,但是一但自行架設,除了SQL主機本身事務外(服務設定、升級、備份策略..etc),還需要處理VM上的其他問題(OS版本Kenerl升級、主機防火牆組態設定…etc),但隨著專案成長,瀏覽人數越來越大,需要考慮的事情會越來越多(是否需要HA,有沒有辦法read&write分離…etc),所以我們這邊採取GCP Cloud SQL全代管關聯資料庫服務。
在前面段落中提到資料庫可以選擇SQL與NoSQL,且考量到以下兩個面向
所以最後團員表決下選擇使用SQL。
CloudSQL選擇有三種MySQL、PostgreSQL 和 SQL Server, 在三套都非常優異的RDBS選擇上,團隊確實是面臨到了困難,在激烈討論後,最後由社群版最優異的PostgreSQL勝出。
不得不說,GCP在UI上面真的非常人性,只要動動手指敲敲鍵盤,幾分鐘內馬上就可以產生可以使用的資料庫 真的是非常方便,以下是我們在設定時會注意的地方。
可以選擇PostgreSQL的版本及託管的主機所在的Region,與初期的主機CPU/Memory/Disk配置,及一個馬上可以看到規格的Summary表格,非常的方便。
再把網頁卷軸往下拉後,如果評估專案初期,不需要這麼強大的主機規格,可以在這邊進行修改(若後期要將主機加大規格,可以隨時停機調整,印象中幾分鐘內就會完成配備擴充的任務)。
目前專案所有的Infra都是建置在GCP同一個VPC上,所以記得把Private IP選項打勾,這樣走內部連線可以節省蠻多流量費用,因為我們專案需要有外部管理需求,有配置一個外部可以連線到的Public IP。
因為CloudSQL如果是配置PostgreSQL,服務是聽在預設5432 Port上 (目前沒有看到可以更改Port的設定),所以為了加強安全,務必要設定哪些IP(或是IP Range)才可以連線到CloudSQL。
如果有開啟Audit Log,GCP就會將CloudSQL上的 Read/Write LOG導向Cloud Log上。後續如果要進一步產出稽核報表,再由Cloud Log做為中繼串聯其他GCP上的服務。
GCP在使用Cloud SQL只要在UI介面上點一點,輕鬆又快速就可以建構一套立即可用,且隨時可以依據專案成長動態調整架構的SQL資料庫,有很多細節都需要注意,以前集團內部,有非常完善的網路攻擊防禦措施,用了雲端的服務,如果稍不注意設定,可能會讓自己的主機被外部駭客當成攻擊目標。另外也因為還是公司內部的產品服務,也很多內部的準則(EX:稽核資料),也要找解決方法符合規範,這些都是企業上雲為甚麼會有CCOE類似的內部組織存在的原因。
—此篇文章承蒙專案同仁StanleyLiu協助諮詢 特此感謝